package org.zarroboogs.smartzpn.tunnel.shadowsocks;
import java.net.InetSocketAddress;
import android.net.Uri;
import android.util.Base64;
import org.zarroboogs.smartzpn.tunnel.Config;
public class ShadowsocksConfig extends Config {
public String EncryptMethod;
public String Password;
public static ShadowsocksConfig parse(String proxyInfo) throws Exception {
ShadowsocksConfig config = new ShadowsocksConfig();
Uri uri = Uri.parse(proxyInfo);
if (uri.getPort() == -1) {
String base64String = uri.getHost();
proxyInfo = "ss://" + new String(Base64.decode(base64String.getBytes("ASCII"), Base64.DEFAULT));
uri = Uri.parse(proxyInfo);
}
String userInfoString = uri.getUserInfo();
if (userInfoString != null) {
String[] userStrings = userInfoString.split(":");
config.EncryptMethod = userStrings[0];
if (userStrings.length >= 2) {
config.Password = userStrings[1];
}
}
config.ServerAddress = new InetSocketAddress(uri.getHost(), uri.getPort());
config.Encryptor = EncryptorFactory.createEncryptorByConfig(config);
return config;
}
@Override
public boolean equals(Object o) {
if (o == null)
return false;
return this.toString().equals(o.toString());
}
@Override
public String toString() {
return String.format("ss://%s:%s@%s", EncryptMethod, Password, ServerAddress);
}
}